package com.sc.nft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sc.nft.entity.EcologyHatchConf;
import com.sc.nft.entity.EcologyHatchRewardsConf;
import com.sc.nft.entity.vo.*;
import com.sc.nft.entity.vo.ecology.*;

import java.util.Date;
import java.util.List;

public interface AdminEcologyHatchConfService {

    /**
     * 新增熔炼配置
     *
     * @param ecologyHatchConf
     */
    void addSmeltingConf(EcologyHatchConf ecologyHatchConf);

    /**
     * 获取熔炼配置列表
     *
     * @param collectionName
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<AdminSmeltingPageVO> getSmeltingPage(String collectionName, Integer pageNo, Integer pageSize);

    /**
     * 获取熔炼配置详情
     *
     * @param id
     * @return
     */
    AdminSmeltingDetailsVO getSmeltingDetails(Long id);

    /**
     * 删除熔炼奖励配置
     *
     * @param id
     */
    void delRewardsById(Long id);

    /**
     * 修改熔炼配置上下架
     *
     * @param id
     * @param status
     */
    void updateSmeltinStatusgById(Long id, Boolean status);

    /**
     * 修改熔炼配置排序
     *
     * @param id
     * @param sort
     */
    void updateSmeltingSortById(Long id, Long sort);

    /**
     * 获取熔炼配置的图片
     *
     * @return
     */
    List<AdminSmeltingImageVO> getSmeltingImage();

    /**
     * 修改熔炼配置的图片
     *
     * @param type
     * @param image
     */
    void updateSmeltingImage(String type, String image);

    /**
     * 删除熔炼配置
     *
     * @param id
     */
    void delConfById(Long id);

    /**
     * 报表查询数据
     *
     * @param startTime
     * @param endTime
     * @return
     */
    SelectDataByTimeVO selectDataByTime(Date startTime, Date endTime);

    /**
     * 分页查询用户记录
     *
     * @param collectionName
     * @param userTel
     * @param startTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminUserEcologyHatchRcordsVO> userRecords(Long daoUserId, Long daoId, String collectionName, String userTel, String startTime, String endTime, Integer pageNo, Integer pageSize,String methodName);


    Page<AdminMetaUserEcologyHatchRcordsVO> adminUserRecords(String collectionName, String userTel, String startTime, String endTime, Integer pageNo, Integer pageSize,String methodName);

    /**
     * 熔炼记录奖励汇总
     *
     * @param id
     * @return
     */
    List<AdminUserEcologyHatchRcordsDetailsVO> userRecordsDetails(Long id);

    /**
     * 熔炼详情消耗藏品记录
     *
     * @param id
     * @return
     */
    List<UserEcologyCollectionRecordsVO> userEcologyCollectionRecords(Long id);

    /**
     * 分页查询用户记录奖励明细
     *
     * @param startTime
     * @param endTime
     * @param pageNo
     * @param pageSize
     * @return
     */
    Page<AdminPageUserRewardsRecordsVO> getPageUserRecordsRecords(Long id, Date startTime, Date endTime, Integer pageNo, Integer pageSize);

    /**
     * 用户熔炼记录导出
     *
     * @param daoId
     * @param collectionName
     * @param userTel
     * @param startTime
     * @param endTime
     * @return
     */
    List<AdminUserEcologyHatchRcordsVO> userRecordsExport(Long daoId, String collectionName, String userTel, String startTime, String endTime);

    /**
     * 获取伞下团对熔炼数据
     *
     * @param daoUserId
     * @param collectionId
     * @param userTel
     * @return
     */
    AdminTeamHatchDataVO getPageTeamHatchData(Long daoUserId, Long collectionId, String userTel, Date startTime, Date endTime);


    /**
     * 熔炼剩余份数
     * @param ecologyHatchId
     * @return
     */
    EcologyHatchCountVO findEcologyHatchCount(Long ecologyHatchId);

    /**
     * 生态藏品铸造/重铸数量
     */
    List<EcologyCollectionCountVO> ecologyCollectionCount(Long daoId);

    List<EcologySmeltVO> ecologySmeltCount(Long daoId, Date startTime, Date endTime);

    List<EcologyTeamDataVO> ecologySmeltTeam(Long daoId, String phoneNo);
}
